package com.manger.utils;

import com.alibaba.fastjson.JSON;
import com.manger.frame.AutoCaseFrame;
import com.manger.model.ChinaArea;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ChinaAreaTools {

    public static Map<String, ChinaArea> chinaAreaMap  = new HashMap<String, ChinaArea>();

    public static void init() throws Exception{
        String chinaAreaPath = SystemConstant.getConfigDir() + "/chinaArea.json";
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(chinaAreaPath)));
        StringBuffer stringBuffer = new StringBuffer();
        String line = null;
        while ((line = reader.readLine()) != null) {
            stringBuffer.append(line);
        }
        List<ChinaArea> chinaAreas = JSON.parseArray(stringBuffer.toString(), ChinaArea.class);
        chinaAreas.forEach(v ->{
            chinaAreaMap.put(v.getCode(), v);
        });
       // handleArea(chinaAreas);
    }

    private static void handleArea(List<ChinaArea> chinaAreas){
        for(ChinaArea chinaArea: chinaAreas){
            if(!"3".equals(chinaArea.getType())){
                continue;
            }
            ChinaArea p1 = getChinaAreaByPid(chinaArea.getpId(),chinaAreas);
            if(p1 != null){
                chinaArea.setParent(p1);
                ChinaArea p2 = getChinaAreaByPid(p1.getpId(),chinaAreas);
                p1.setParent(p2);
            }
            chinaAreaMap.put(chinaArea.getCode(),chinaArea);
        }
    }

    private static ChinaArea getChinaAreaByPid(String pid,List<ChinaArea> chinaAreas){
        for(ChinaArea chinaArea: chinaAreas){
            if(pid.equals(chinaArea.getId()) ){
                return chinaArea;
            }
        }
        return null;
    }

    public static String getProvinceByIdCard(String idCard){
        String num = idCard.substring(0,2);
        ChinaArea chinaArea = chinaAreaMap.get(num);
        if(chinaArea == null){
            return null;
        }
        return chinaArea.getName();
    }

    public static String getCityByIdCard(String idCard){
        String num = idCard.substring(0,4);
        ChinaArea chinaArea = chinaAreaMap.get(num);
        if(chinaArea == null){
            return null;
        }
        return chinaArea.getName();
    }

    public static String getDistrictByIdCard(String idCard){
        String num = idCard.substring(0,6);
        ChinaArea chinaArea = chinaAreaMap.get(num);
        if(chinaArea == null){
            return null;
        }
        return chinaArea.getName();
    }

    public static String getSexByIdCard(String idCard) {
        if (idCard == null || idCard.length() != 18) {
            return "无效的身份证号码";
        }
        // 获取第17位数字
        char genderCode = idCard.charAt(16);
        // 判断性别
        if (Character.isDigit(genderCode)) {
            int genderDigit = Integer.parseInt(String.valueOf(genderCode));
            if (genderDigit % 2 == 0) {
                return "女";
            } else {
                return "男";
            }
        } else {
            return "不详";
        }
    }

    public static void main(String[] args) throws Exception{
        ChinaAreaTools.init();
        Map<String,ChinaArea> map = ChinaAreaTools.chinaAreaMap;

        System.out.println("============================================");
    }
}
